//__________________________________________________________
// QUADRINOME : DARAS Valerie - DEMEYER Alexandre - RIVIERE Julie - TOULET Agnes 
//__________________________________________________________

//____ registres de périphériques du stm_32
#include "stm32f10x.h"
#include "../pilotes/girouette/girouette.h"
#include "../pilotes/servo_moteur/servo_moteur.h" 
#include "../pilotes/timer/Timer_1234.h"
#include "../pilotes/gpio/gpio.h"
#include "../pilotes/clock/clock_conf.h"
#include "../pilotes/clock/clock.h"
#include "../pilotes/timer_systick/Timer_Systick.h"
#include "../pilotes/adc/ADC_123.h"

//import float periode_systick ;

float angleG = 0;
int mis_a_zero = 0;
u16 X = 0;
u16 Y = 0;
float periode_systick = 5000 ; // en us

void Border_Voile () 
{
	angleG = angle_girouette();
	// Récupération de X et Y (accéléromètre, roulis du bateau)	
	X = Lecture_ADC(ADC1, 10); 
	Y = Lecture_ADC(ADC1, 11);
		
	// Selon le roulis, on borde les voiles ou pas
	if(!(X > 0x0800 || X < 0x05F3)) 
		Ajuster_Voiles(angleG) ;
	else
		Ajuster_Voiles(180) ; // + TODO : ENVOYER UN MESSAGE D'ERREUR
}	

int main (void)
{
	// Cette ligne valide les horloges de quelques périphériques, pour le moment ignorez-la 
	// mais CONSERVEZ CETTE LIGNE EN DEBUT DE PROGRAMME !
 	(RCC->APB2ENR)|= RCC_APB2ENR_IOPAEN | RCC_APB2ENR_IOPBEN | RCC_APB2ENR_IOPCEN | RCC_APB2ENR_ADC1EN;

	CLOCK_Configure () ;
    // Initialisation du systeme "Girouette"
	config_timer_coder();
	
	// Initialisation du système "Accéléromètre"
	Init_ADC_Single_Conv(ADC1, 2);

	// Initialisation du systeme "Voile"
	Init_Voile () ;
	
	// Initialisation du timer systick
	SysTick_On ;
	Systick_Period(periode_systick);
	SysTick_Enable_IT ;
	Systick_Prio_IT(1, Border_Voile);
	
	while (mis_a_zero == 0)
		mis_a_zero = mise_a_zero_girouette();
	
	while(1) 
		;
	
	return 0;
}

